c55e5a50163e0299dd874ed09ce6f09e5f137f7d,src/main/java/net/foxdenstudio/sponge/foxcore/plugin/command/CommandSubtract.java,CommandSubtract,getSuggestions,#CommandSource#String#,104
Before Change
@Override
public List<String> getSuggestions(CommandSource source, String arguments) throws CommandException {
AdvCmdParse.ParseResult parse = AdvCmdParse.builder().arguments(arguments).excludeCurrent(true).autoCloseQuotes(true).parse();
if (parse.currentElement.type.equals(AdvCmdParse.CurrentElement.ElementType.ARGUMENT)) {
if (parse.currentElement.index == 0)
return FCStateManager.instance().getPrimaryAliases().stream()
.filter(alias -> !isOn(parse.args, alias))
After Change
@Override
public List<String> getSuggestions(CommandSource source, String arguments) throws CommandException {
if (!testPermission(source)) return ImmutableList.of();
AdvCmdParse.ParseResult parse = AdvCmdParse.builder()
.arguments(arguments)
.limit(1)
.excludeCurrent(true)
.autoCloseQuotes(true)
.parseLastFlags(false)
.leaveFinalAsIs(true)
.parse();
if (parse.current.type.equals(AdvCmdParse.CurrentElement.ElementType.ARGUMENT)) {
if (parse.current.index == 0) {
return FCStateManager.instance().getPrimaryAliases().stream()
.filter(new StartsWithPredicate(parse.current.token))
.collect(GuavaCollectors.toImmutableList());
}
} else if (parse.current.type.equals(AdvCmdParse.CurrentElement.ElementType.FINAL)) {
IStateField field = FCStateManager.instance().getStateMap().get(source).getFromAlias(parse.args[0]);
if (field == null) return ImmutableList.of();
String extraArgs = "";
if (parse.args.length > 1) extraArgs = parse.args[1];
return field.subtractSuggestions(source, extraArgs);
} else if (parse.current.type.equals(AdvCmdParse.CurrentElement.ElementType.COMPLETE))
return ImmutableList.of(parse.current.prefix + " ");
return ImmutableList.of();
}